// 交互动效与触觉工具（跨 H5/小程序）

// 轻触震动反馈（小程序端优先）
export function hapticLight() {
  try {
    // 微信小程序
    if (typeof wx !== 'undefined' && wx.vibrateShort) {
      wx.vibrateShort({ type: 'light' })
      return
    }
    // H5 简易回退：无操作
  } catch (e) {}
}

// 长震动
export function hapticHeavy() {
  try {
    if (typeof wx !== 'undefined' && wx.vibrateLong) {
      wx.vibrateLong()
      return
    }
  } catch (e) {}
}

// 播放轻量音效（需传入资源路径，按需懒加载）
export function playSfx(src) {
  try {
    const audio = typeof Audio !== 'undefined' ? new Audio(src) : null
    if (audio) {
      audio.volume = 0.5
      audio.play().catch(() => {})
    }
  } catch (e) {}
}

// 指令式：按压缩放（H5）
// 在小程序中无法直接注册自定义指令，这里提供简易绑定函数
export function bindPressScale(el, options = {}) {
  if (!el) return
  const scale = options.scale || 0.95
  const duration = options.duration || 120
  const easing = options.easing || 'ease-out'
  const vibrate = options.vibrate !== false

  const down = () => {
    el.style.transition = `transform ${duration}ms ${easing}`
    el.style.transform = `scale(${scale})`
    if (vibrate) hapticLight()
  }
  const up = () => {
    el.style.transition = `transform ${duration}ms ${easing}`
    el.style.transform = 'scale(1)'
  }
  el.addEventListener('touchstart', down)
  el.addEventListener('mousedown', down)
  el.addEventListener('touchend', up)
  el.addEventListener('mouseup', up)
  el.addEventListener('mouseleave', up)

  return () => {
    el.removeEventListener('touchstart', down)
    el.removeEventListener('mousedown', down)
    el.removeEventListener('touchend', up)
    el.removeEventListener('mouseup', up)
    el.removeEventListener('mouseleave', up)
  }
}

// 三点打字动画所需的文本（用于占位）
export function typingDots() {
  return '...'
}


